gusucode.com > 现代通信系统——使用MATLAB(+全部程序) > 现代通信系统——使用MATLAB(+全部程序)/现代通信系统——使用MATLAB(+全部程序)/Matlab 程序/Chapter8/Cnv_encd.m
function output=cnv_encd(g,k0,input) % cnv_encd(g,k0,input) % determines the output sequence of a binary convolutional encoder % g is the generator matrix of the convolutional code % with n0 rows and l*k0 columns. Its rows are g1,g2,...,gn. % k0 is the number of bits entering the encoder at each clock cycle. % input is the binary input seq. % Check to see if extra zero-padding is necessary. if rem(length(input),k0) > 0 input=[input,zeros(size(1:k0-rem(length(input),k0)))]; end n=length(input)/k0; % Check the size of matrix g. if rem(size(g,2),k0) > 0 error('Error, g is not of the right size.') end % Determine l and n0. l=size(g,2)/k0; n0=size(g,1); % add extra zeros u=[zeros(size(1:(l-1)*k0)),input,zeros(size(1:(l-1)*k0))]; % Generate uu, a matrix whose columns are the contents of % conv. encoder at various clock cycles. u1=u(l*k0:-1:1); for i=1:n+l-2 u1=[u1,u((i+l)*k0:-1:i*k0+1)]; end uu=reshape(u1,l*k0,n+l-1); % Determine the output output=reshape(rem(g*uu,2),1,n0*(l+n-1));